iT邦幫忙

2022 iThome 鐵人賽

DAY 27
1
自我挑戰組

開始系統測試系列 第 27

Day 27 | Web測試

  • 分享至 

  • xImage
  •  

(一)、分布式多層結構

https://ithelp.ithome.com.tw/upload/images/20221012/20140878nK1EK6ij2A.jpg

(二)、Web的測試方法

  1. Web測試的總體攻略
    1. 表現層
      • 對每一個業面進行拼寫、語法、風格等檢查
      • 確保字體在不同瀏覽器中相同
      • 確保每一個連結都指向正確的位置
      • 檢查圖片確保解析度和大小正確
      • 在頁面載入時確定鼠標位置,以確保其在正確的文本框中
      • 確認頁面載入時選擇了默認的按鈕
      • 檢查交互性操作的用戶友好度反饋以及體驗一致性
      • 檢查商業或行業特定術語與風格的使用
    2. 業務層
      • 確保有正確收集數據
      • 檢查電話號碼、電子郵件、收件地址……等格式是否正確
      • 檢查字元集是否洽當
      • 確保響應時間、吞吐綠等性能指標得到了滿足
      • 驗證任務正確完成
      • 確保失敗的任務回滾(rollback)正確
      • 測試連通冗餘 - 在N個瀏覽器上登入同樣帳號後,是否可正常操作,或是設計僅允許一個瀏覽器登入(如銀行)
      • 測試網路中斷時程式反應
    3. 資料層
      • 確保資料庫操作滿足效能要求
      • 驗證數據儲存適當且正確
      • 驗證可使用當前備份來恢復
      • 測試故障處理和冗餘功能
      • 測試數據加密和安全性
      • 測試後端數據輸入與管理功能的可用性及準確性
  2. Web測試的範圍
    • 功能
    • 性能
    • 介面
    • 兼容性
    • 安全性
    • DB
    • 文件
  3. Web測試的方法
    1. 功能測試 - 主要從連結、表單、Cookies、設計語言、資料庫、文件上傳等方面進行。
      1. 連結
        • 即超連結,可指向網頁、同頁面上的不同位置、圖片、電子郵件、文件、應用程式。
        • 常見錯誤:
          • 錯誤連結 - 如URL錯誤、大小寫不完全正確、網域拼寫錯誤等。
          • 空連結 - 點擊時不會指向任何內容
          • 死連結 - 原來正常後來失效的連結
          • 孤立頁面 - 沒有任何連結指向該頁面,只有知道正確的網址才能訪問。
      2. 表單
        • 主要關注程式是否能正確的處理使用者提交的訊息,並將訊息正確的反饋給使用者
        • 測試時應注意:
          • 輸入框長度是否有限制
          • 輸入框對於字元類型是否有限制(中、英、數或特殊符號等)
          • 輸入框與輸入內容的型態是否相同,如日期欄位只能匹配不同的日期格式,不能匹配其他格式的數據
          • 各按鈕執行的功能是否正確
      3. Cookies
        • Cookies能夠讓網站把少量數據儲存到使用者的硬碟或記憶體,或是從使用者的硬體讀取資料的技術
        • Cookies的用途
          • 自動登入
          • 廣告投放
        • Cookies的測試包含:
          • Cookies安全性
            • 最好不要儲存機敏資訊,如真有必要則需進行加密處理
            • 過期時間是否正確
          • Cookies的變數名稱與值是否正確
          • Cookies是否必要或缺少
            • 生成的Cookies文件與創建的一致
            • 對於不必要的Cookies可以刪除
          • Cookies的作用區域是否合理
          • 多個Cookies作用區域之間關係的測試
      4. 設計語言測試
        • 版本差異可能會導致客戶端或者伺服器端的異常,如使用哪個版本的HTML等
        • 不同的腳本語言如Java、JavaScript也要驗證
        • 關於設計語言的測試,應注意:
          • 瀏覽器的內核引擎不同,會導致與不同的開發語言的兼容情形不同
          • 不同的設計語言與平台也有不同的兼容性
          • 執行時兼也不同
          • 嵌入其他語言的能力,以利實現其他當前腳本語言無法完成的功能。
          • 資料庫可能升級,需考慮腳本語言對資料庫的完善程度
      5. 文件上傳
        • 只能上傳允許的檔案類型
        • 不能上傳腳本或可執行文件
        • 不能單純以後綴文字來判斷檔案類型
        • 瀏覽文件後,可以正常處理刪除文件時出現的異常情形
        • 上傳超大文件時可以正常處理,比如給出提示訊息等
        • 上傳的文件應該提供API查看
        • 上傳的文件不應該直接保存在DB中,而是將文件保存在伺服器端的硬碟,而DB只保存該文件的基本資訊
        • 文件上傳到伺服器端應該重新命名,防止文件名稱衝突
    2. 性能測試
      1. 連結速度測試 - 響應時間不能太長,一般不超過5秒
      2. 負載測試 - 測試系統能承受的最大負載(如最大用戶數、最大業務量等)以及性能表現
      3. 壓力測試 - 測試系統在一定壓力下的性能表現,通常錯誤率不能超過5%
    3. 介面測試
      1. 格式驗證 - 測試Web頁面中一些空間默認的標準定義,如默認值、項目排序等
      2. 導覽列測試
        • 導覽列可正確顯示,且顯示的內容正確
        • 不同狀態下(如登入和未登入),導覽列顯示的內容是否正確
        • 導覽列的每項內容連結是否正確
      3. 拚寫和語法測試 - 測試頁面內容、菜單、連結、圖片、表格等內容的拼寫和語法
      4. 頁面排版測試
        • 頁面標題驗證
        • 頁面元素(文字、視窗、連結)排版驗證
        • 圖形驗證
        • 版本訊息驗證
        • 不同解析度下頁面顯示情況驗證
        • 頁面長度驗證
      5. Tab測試 - Tab順序正確跳轉
    4. 安全性測試
      1. 基本安全測試
        • 各種登入模式的安全性驗證
        • 用戶權限(如功能限制、資料查看限制)的驗證
        • Cookies和Session的有效期驗證等特殊機制
        • 敏感數據加密、資料儲存安全性
        • 測試軟體不會因為異常條件下錯誤操作導致不安全狀態
        • 其他安全漏洞的檢查,如WSDigger掃描
          • 跨站點攻擊XSS
          • SQL注入
      2. 認證測試
        • 登入頁面是否存在驗證碼
        • 驗證碼和帳號、密碼是否一次性、同時交給伺服器驗證,如果分開提交則存在漏洞
        • 驗證碼檢驗通過後才進行帳號和密碼的檢驗
        • 觀察驗證碼是否為隨機生成,若存在規律性則說明存在漏洞
        • 驗證碼背景如果為純色則存在漏洞
        • 認證一次後是否立刻失效
        • 不能對認證錯誤提示準確的訊息,如帳號錯誤、密碼錯誤等
        • 合理的鎖定機制
        • 防止認證被繞過,如SQL注入
      3. 會話管理(session)測試
        • 登入後身分訊息不再由客戶端提交,而是以伺服器端會話訊息保存的身分訊息為準
        • URL不能有Session ID訊息
        • 登入後的頁面要有明確的登出按鈕,登出後要清除Session
      4. 權限管理測試
        • 橫向越權 - 攻擊者嘗試訪問與他擁有相同權限的用戶的資源
        • 縱向越權 - 低級別的攻擊者嘗試訪問高級別用戶的資源
      5. 文件和目錄測試
        • 不存在不需要對外開放的敏感API或API進行的完善的權限控制
        • 禁止獲取敏感的目錄或文件資訊
        • 所有對目錄的訪問都不能顯示出文件列表
        • 禁止訪問和下載文件的備份
        • 不能越權獲取文件 - 如DirBuster掃描
    5. 資料庫測試
      • 是為了發現錯誤和缺陷而運行DB的過程
      • 資料庫測試也分成白箱測試和黑箱測試
      • 資料庫黑箱測試:
        • 表結構是否合理
        • 數據結構(類型、長度)是否正確定義,輸入介面與數據結構是否一致
        • 表與表之間的關聯是否正確,主鍵、外來鍵是否合理
        • 索引的創建是否合理
        • 儲存過程是否完整,能否正確接受輸入、輸出正確結果
        • 能否正常新增、更新、刪除數據
        • 能否正確處理併發操作
        • 表級、列級完整性約束條件是否滿足
        • 處理能力、可靠性、可維護性、性能是否滿足要求

上一篇
Day 26 | 性能測試
下一篇
Day 28 | 手機APP測試(一)
系列文
開始系統測試30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言